import 'package:capture_audio/core/utils/index.dart';
import 'package:flutter/material.dart';

/// RootScreen 是应用的主界面
/// 这是一个 StatefulWidget，可以根据状态变化更新UI
class RootScreen extends StatefulWidget {
  /// 构造函数，使用 const 提高性能
  const RootScreen({super.key});

  /// 创建与该 Widget 关联的状态对象
  @override
  State<RootScreen> createState() => _RootScreenState();
}

/// RootScreen 的状态管理类
class _RootScreenState extends State<RootScreen> {
  bool? _isAnsweringMachineEnabled;
  String? _openingStatement;
  bool? _isRecordingEnabled;
  String? _recordingOutputFile;

  @override
  void initState() {
    super.initState();
    _loadAnsweringMachineStatus();
  }

  Future<void> _loadAnsweringMachineStatus() async {
    final isEnabled = await Preferences.isAnsweringMachineEnabled();
    final _isRecordingEnabledPref = await Preferences.isRecordingEnabled();
    final openingStatement = await Preferences.getOpeningStatement();
    if (mounted) {
      setState(() {
        _isAnsweringMachineEnabled = isEnabled;
        _isRecordingEnabled = _isRecordingEnabledPref;
        _openingStatement = openingStatement;
      });
    }
  }

  /// 构建 UI 界面
  ///
  /// @param context 上下文对象，提供有关当前 widget 在 widget 树中的位置信息
  /// @return 返回构建的 widget
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      // 应用栏配置
      appBar: AppBar(
        // 设置标题文本和样式
        title: const Text('Root Screen', style: TextStyle(color: Colors.white)),
        // 设置应用栏背景颜色
        backgroundColor: Colors.deepPurple,
      ),
      // 主体内容区域
      body: Container(
        // 设置容器宽度为屏幕宽度
        width: MediaQuery.of(context).size.width,
        // 设置容器高度为屏幕高度
        height: MediaQuery.of(context).size.height,
        padding: EdgeInsets.all(12.0),
        // 设置背景颜色为白色
        color: Colors.white,
        // 子元素布局，使用列布局垂直排列
        child: Column(
          // 主轴对齐方式为居中
          mainAxisAlignment: MainAxisAlignment.center,
          // 交叉轴对齐方式为居中
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            // 文本按钮组件
            ElevatedButton(
              // 按钮点击事件处理函数（当前为空实现）
              onPressed: () async {
                Dialer.makePhoneCall('18118712413');
              },
              // 按钮显示的文本内容
              child: const Text('拨打 18118712413'),
            ),

            SizedBox(height: 16),
            // 文本按钮组件
            ElevatedButton(
              // 按钮点击事件处理函数（当前为空实现）
              onPressed: () async {
                print("获取开场白文件...");
                await FilePicker.getFileUri();
              },
              // 按钮显示的文本内容
              child: Text('获取开场白文件'),
            ),

            SizedBox(height: 16),
            Text(
              '当前开场白文件Uri: $_openingStatement',
              style: TextStyle(
                fontSize: 16,
                fontWeight: FontWeight.w500,
                color: Colors.purple,
              ),
            ),

            SizedBox(height: 16),
            // 文本按钮组件
            ElevatedButton(
              // 按钮点击事件处理函数（当前为空实现）
              onPressed: () async {
                final uri = await Preferences.getOpeningStatement();
                setState(() {
                  _openingStatement = uri;
                });
              },
              // 按钮显示的文本内容
              child: Text('获取已保存的开场白文件Uri'),
            ),
            SizedBox(height: 16),

            Row(
              children: [
                // 文本按钮组件
                Text('答录机的状态 $_isAnsweringMachineEnabled'),

                // 文本按钮组件
                ElevatedButton(
                  // 按钮点击事件处理函数（当前为空实现）
                  onPressed: () async {
                    await Preferences.setAnsweringMachineEnabled(true);
                    final isEnabled =
                        await Preferences.isAnsweringMachineEnabled();
                    if (mounted) {
                      setState(() {
                        _isAnsweringMachineEnabled = isEnabled;
                      });
                    }
                  },
                  // 按钮显示的文本内容
                  child: const Text(
                    '开启答录机',
                    style: TextStyle(color: Colors.red),
                  ),
                ),

                // 文本按钮组件
                ElevatedButton(
                  // 按钮点击事件处理函数（当前为空实现）
                  onPressed: () async {
                    await Preferences.setAnsweringMachineEnabled(false);
                    final isEnabled =
                        await Preferences.isAnsweringMachineEnabled();
                    if (mounted) {
                      setState(() {
                        _isAnsweringMachineEnabled = isEnabled;
                      });
                    }
                  },
                  // 按钮显示的文本内容
                  child: const Text(
                    '关闭答录机',
                    style: TextStyle(color: Colors.redAccent),
                  ),
                ),
              ],
            ),
            SizedBox(height: 16),
            Text('录音文件的存储路径: $_recordingOutputFile'),

            TextButton(
              onPressed: () async {
                final value = await Preferences.getRecordingOutputFile();
                setState(() {
                  _recordingOutputFile = value;
                });
              },
              child: Text("获取录音文件存储路径"),
            ),
            SizedBox(height: 16),
            Row(
              children: [
                ElevatedButton(
                  onPressed: () async {
                    FilePicker.getFolderUri();
                  },
                  child: const Text('设置录音文件的Uri'),
                ),
              ],
            ),
            Row(
              children: [
                Text('录音功能的状态 $_isRecordingEnabled'),
                ElevatedButton(
                  onPressed: () async {
                    await Preferences.setRecordingEnabled(true);
                    final isEnabled = await Preferences.isRecordingEnabled();
                    if (mounted) {
                      setState(() {
                        _isRecordingEnabled = isEnabled;
                      });
                    }
                  },
                  child: const Text(
                    '开启录音',
                    style: TextStyle(color: Colors.red),
                  ),
                ),
                ElevatedButton(
                  onPressed: () async {
                    await Preferences.setRecordingEnabled(false);
                    final isEnabled = await Preferences.isRecordingEnabled();
                    if (mounted) {
                      setState(() {
                        _isRecordingEnabled = isEnabled;
                      });
                    }
                  },
                  child: const Text(
                    '关闭录音',
                    style: TextStyle(color: Colors.redAccent),
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}
